Acceso a Bases de Datos [JDBC]

Supongamos que despu�s de una primera semana exitosa, el propietario de "The Coffee Break" quiere actualizar la columna SALES de la tabla COFFEES introduciendo el n�mero de libras vendidas de cada tipo de caf�. La sentencia SQL para actualizar una columna se podr�a parecer a esto.

String updateString = "UPDATE COFFEES " +
	"SET SALES = 75 " + 
	"WHERE COF_NAME LIKE 'Colombian'";

Uitlizando el objeto stmt, este c�digo JDBC ejecuta la sentencia SQL contenida en updateString.

stmt.executeUpdate(updateString);

La tablaCOFFEES ahora se parecer� a esto.

COF_NAME SUP_ID PRICE SALES TOTAL
Colombian 101 7.99 75 0
French_Roast 49 8.99 0 0
Espresso 150 9.99 0 0
Colombian_Decaf 101 8.99 0 0
French_Roast_Decaf 49 9.99 0 0

Observa que todav�a no hemos actualizado la columna TOTAL, y por eso tiene valor 0.

Ahora seleccionaremos la fila que hemos actualizado, recuperando los valores de las columnas COF_NAME y SALES, e imprimiendo esos valores.

String query = "SELECT COF_NAME, SALES FROM COFFEES " +
	       "WHERE COF_NAME LIKE 'Colombian'";
ResultSet rs = stmt.executeQuery(query);
while (rs.next()) {
		String s = rs.getString("COF_NAME");
		int n = rs.getInt("SALES");
		System.out.println(n + " pounds of " + s +
 						  " sold this week.")
}

Esto imprimira lo siguiente.

75 pounds of Colombian sold this week.

C�mo la cla�sula WHERE l�mita la selecci�n a una s�la l�nea, s�lo hay una l�nea en la ResultSet: rs y una l�nea en la salida. Por lo tanto, ser�a posible escribir el c�digo sin un bucle while.

rs.next();
String s = rs.getString(1);
int n = rs.getInt(2);
System.out.println(n + " pounds of " + s + " sold this week.")

Aunque hay una s�la l�nea en la hoja de resultados, necesitamos utilizar el m�todo next para acceder a ella. Un objeto ResultSet se crea con un cursor apuntando por encima de la primera fila. La primera llamada al m�todo next posiciona el cursor en la primera fila (y en este caso, la �nica) de rs. En este c�digo, s�lo se llama una vez a next, si sucediera que existiera una l�nea, nunca se acceder�a a ella.

Ahora actualizaremos la columna TOTAL a�adiendo la cantidad vendida durante la semana a la cantidad total existente, y luego imprimiremos el n�mero de libras vendidas hasta la fecha.

String updateString = "UPDATE COFFEES " +
		      "SET TOTAL = TOTAL + 75 " + 
		      "WHERE COF_NAME LIKE 'Colombian'";
stmt.executeUpdate(updateString);
String query = "SELECT COF_NAME, TOTAL FROM COFFEES " +
				   "WHERE COF_NAME LIKE 'Colombian'";
ResultSet rs = stmt.executeQuery(query);
while (rs.next()) {
		String s = rs.getString(1);
		int n = rs.getInt(2);
		System.out.println(n + " pounds of " + s + " sold to date.")
}

Observa que en este ejemplo, utilizamos el �ndice de columna en vez del nombre de columna, suministrando el �ndice 1 a getString (la primera columna de la hoja de resultados es COF_NAME), y el �ndice 2 a getInt (la segunda columna de la hoja de resultados es TOTAL). Es importante distinguir entre un �ndice de columna en la tabla de la base de datos como opuesto al �ndice en la tabla de la hoja de resultados. Por ejemplo, TOTAL es la quinta columna en la tabla COFFEES pero es la segunda columna en la hoja de resultados generada por la petici�n del ejemplo anterior.

COMPARTE ESTE ARTÍCULO

COMPARTIR EN FACEBOOK
COMPARTIR EN TWITTER
COMPARTIR EN LINKEDIN
COMPARTIR EN WHATSAPP
ARTÍCULO ANTERIOR